#pragma once

#include <string_view>

#include "git-branch.h"
#include "git-remote.h"

namespace git
{

class RemoteTrackBranch : public Branch
{
public:
    RemoteTrackBranch() {}

    RemoteTrackBranch(const RemoteTrackBranch &) = delete;

    RemoteTrackBranch(RemoteTrackBranch &&b);

    virtual ~RemoteTrackBranch() {}

    RemoteTrackBranch &operator=(const RemoteTrackBranch &) = delete;

    RemoteTrackBranch &operator=(RemoteTrackBranch &&b);

    Remote remote() const;

private:
    RemoteTrackBranch(git_reference *ref);

    std::string remoteName() const;

    friend class LocalBranch;
};

} // namespace git
